/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package mx.its.dsw2.view;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.event.ActionEvent;
import mx.its.dsw2.biblioteca.bl.AutorBlLocal;
import mx.its.dsw2.biblioteca.bl.CategoriaBlLocal;
import mx.its.dsw2.biblioteca.bl.LibroBlLocal;
import mx.its.dsw2.biblioteca.enumeraciones.EstadoDisponible;
import mx.its.dsw2.biblioteca.enumeraciones.EstadoLibro;
import mx.its.dsw2.biblioteca.modelo.Autor;
import mx.its.dsw2.biblioteca.modelo.Categoria;
import mx.its.dsw2.biblioteca.modelo.Libro;

/**
 *
 * @author 100101
 */
@ManagedBean
@SessionScoped
public class BookBean {
    @EJB
    private CategoriaBlLocal categoriaBl;
    @EJB
    private AutorBlLocal autorBl;
    @EJB
    private LibroBlLocal libroBl;
    
    
    private List<Libro> listBooks;
    private List<Autor> listAuthor;
    private List<Categoria> listCategory;
    private List<Integer>listaEstado;
    private List<Boolean>listaDisponible;
    private Libro book;
    private Categoria category;
    private int idAuthor;
    private int idCategoria;
    private int estado;
    private String accion="";
    private String link="";
    /**
     * Creates a new instance of BookBean
     */
    public BookBean() {
        book=new Libro();
    }

    public int getEstado() {
        return estado;
    }

    public void setEstado(int estado) {
        this.estado = estado;
    }
    
    

    public Libro getBook() {
        return book;
    }

    public void setBook(Libro book) {
        this.book = book;
    }

    public int getIdAuthor() {
        return idAuthor;
    }

    public void setIdAuthor(int idAuthor) {
        this.idAuthor = idAuthor;
    }

    public int getIdCategoria() {
        return idCategoria;
    }

    public void setIdCategoria(int idCategoria) {
        this.idCategoria = idCategoria;
    }

    public Categoria getCategory() {
        return category;
    }

    public void setCategory(Categoria category) {
        this.category = category;
    }

    public List<Integer> getListaEstado() {
        listaEstado=new ArrayList<Integer>();
         EstadoLibro[] listaItems=EstadoLibro.values();
         for(int x=0;x<listaItems.length;x++){
             listaEstado.add(listaItems[x].ordinal());
         }
        
        return listaEstado;
    }

//    public List<Boolean> getListaDisponible() {
//        listaDisponible=new ArrayList<Boolean>();
//        EstadoDisponible[] items=EstadoDisponible.values();
//         for(int x=0;x<items.length;x++){
//             listaDisponible.add(items[x].name());
//         }
//        return listaDisponible;
//    }
    
    

    public List<Libro> getListBooks() {
        listBooks=libroBl.getAll();
        return listBooks;
    }

    public List<Autor> getListAuthor() {
        listAuthor=autorBl.gettAll();
        return listAuthor;
    }

    public List<Categoria> getListCategory() {
//       listCategory=categoriaBl.getAll();
        return listCategory;
    }
    
    

   public void prepararNuevo(ActionEvent evt){//booklist
       accion="Nuevo";
       listCategory=new ArrayList<Categoria>();
       book=new Libro();
   }
   
   public String prepararEditar(){//booklist
       accion="Editar";
//       int index=Integer.parseInt(evt.getComponent().getClientId().split(":")[2]);
//       book=listBooks.get(index);
       listCategory=categoriaBl.getListByBook(book);
       return "BookCreateEdit";
  }
   
   
   public void prepararEliminar(ActionEvent evt){//no se usa
       accion="Eliminar";
       int index=Integer.parseInt(evt.getComponent().getClientId().split(":")[2]);
       book=listBooks.get(index); 
//       listCategory=categoriaBl.getListByBook(book);
   }
   
   public void eliminarCategoriaDeLista(ActionEvent evt){//createedit
//      accion="Eliminar2";
               int index=Integer.parseInt(evt.getComponent().getClientId().split(":")[2]);
//       category=listCategory.get(index);  
       listCategory.remove(index);
       
   }
   
   public void agregarCategoria(ActionEvent evt){//create edit
       if(!listCategory.contains(categoriaBl.findById(idCategoria))){
       listCategory.add(categoriaBl.findById(idCategoria));
       }else{
           
       }
   }
   
   public String procesarAccion(){//bookconfirmar
       if(accion.equalsIgnoreCase("Nuevo")){
           libroBl.register(book,listCategory);
       }else{
           if(accion.equalsIgnoreCase("Editar")){
              // System.out.println("libro ca "+book.getCategoriaDeLibroList()+"lista "+listCategory);
                        libroBl.modify(book,listCategory);
           }else{
               if(accion.equalsIgnoreCase("Eliminar")){
                   libroBl.remove(book);
               }
           }
       }
       accion="";
       return "BookList";
   }
    
   public String llamadaCancelarConfirmar(){//bookconfirmar
       
       if(accion.equalsIgnoreCase("Editar")||accion.equalsIgnoreCase("Nuevo")
               ){
           link="BookCreateEdit";
           
       }else{
           if(accion.equalsIgnoreCase("Eliminar")){
               link="BookList";
           }
       }
      return link;
   }
   
   public String accionAceptar(){
       book.setIdAutor(autorBl.getAuthorById(idAuthor));
       return "BookConfirmar";
   }
   
   
    
}
